<?php

class ValidateAjax{
	protected $_errorMessage = array();
	protected $_isError = false;
	
	
	public function validateMainImage($image){
		if(!$image){
			$this->_isError = true;
			$this->_errorMessage['errors']['mainImage'] = 'Bạn phải upload hình đại diện trước khi đăng bài viết!';
			return false;
		}
		$tmpArray = explode('_', $image);
		$folder = $tmpArray[0] . '/' . $tmpArray[1] . '/' . $tmpArray[2] . '/';
		$agent = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15';
		$url = 'http://localhost/test/jqueryupload/images/text/original/' . $folder . $image;
		$url = str_replace(" ", '%20', $url);
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_USERAGENT, $agent);
		curl_setopt($ch, CURLOPT_FAILONERROR, 1);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_NOBODY, true);
		$result = curl_exec($ch);
		
		
		if($result !== false){
			$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
			if($statusCode != 200){
				$this->_isError = true;
				$this->_errorMessage['errors']['mainImage'] = 'Bạn phải upload hình đại diện trước khi đăng bài viết!';
				
			}
		}
		
	}
	
	public function validateTitle($title){
		if(!isset($title) || empty($title)){
			$this->_isError = true;
			$this->_errorMessage['errors']['txtTitle'] = 'Tiêu đề không được để trống!';
		}else{
			if(mb_strlen($_POST['txtTitle'], 'UTF-8') < 3 || mb_strlen($_POST['txtTitle'], 'UTF-8') > 150){
				$this->_isError = true;
				$this->_errorMessage['errors']['txtTitle'] = 'Chiều dài tiêu đề phải lớn hơn 3 và bé hơn 150 kí tự!';
			}
		}
	}
	
	
	public function validateDescription($description, $default = array()){
		if($default['required'] == true){
			if(!isset($description) || empty($description)){
				$this->_isError = true;
				$this->_errorMessage['errors'][$default['validateAlias']] = $default['validateDescription'] . ' không được để rỗng!';

				return;
			}
		}
		
		if(!isset($description) || empty($description)){
			
		}else{
			if(mb_strlen($description, 'UTF-8') < 10){
				$this->_isError = true;
				$this->_errorMessage['errors'][$default['validateAlias']] = 'Chiều dài '. $default['validateDescription'] .' phải lớn hơn 10 kí tự!';
			}
		}
	}
	
	public function validateAlbum($album){
		if($album != 0 && $album != '' && isset($album)){
			$model = new Model();
			$model->select = 'id';
			$model->where = "id = '" . $album . "' AND username = '" . $_SESSION['user']['username'] . "'";
			$model->getdata('album');
			if($model->num_rows() <= 0){
				$this->_isError = true;
				$this->_errorMessage['errors']['txtAlbum'] = 'Album không tồn tại!';
			}
		}
	}
	
	public function validateCategory($cat){
		$model = new Model();
		$model->select = 'id';
		$model->where = "id = '" . $cat . "'";
		$model->getdata('category');
		if($model->num_rows() <= 0){
			$this->_isError = true;
			$this->_errorMessage['errors']['txtCat'] = 'Danh mục không tồn tại!';
		}
	}
	
	
	public function validateFiles($files){
		if(!isset($files) || empty($files)){
			$this->_isError = true;
			$this->_errorMessage['errors']['uploadedFile'] = 'Bạn phải upload hình trước khi đăng bài viết!';
		}else{
			$ch = curl_init();
			foreach($files as $file){
				$tmpArray = explode('_', $file);
				$folder = $tmpArray[0] . '/' . $tmpArray[1] . '/' . $tmpArray[2] . '/';
				$agent = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15';
				$url = 'http://localhost/test/jqueryupload/images/image/original/' . $folder . $file;
				$url = str_replace(" ", '%20', $url);

				curl_setopt($ch, CURLOPT_USERAGENT, $agent);
				curl_setopt($ch, CURLOPT_FAILONERROR, 1);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				curl_setopt($ch, CURLOPT_URL, $url);
				curl_setopt($ch, CURLOPT_NOBODY, true);
				$result = curl_exec($ch);


				if($result !== false){
					$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
					if($statusCode != 200){
						$this->_isError = true;
						$this->_errorMessage['errors']['uploadedFile'] = 'Bạn phải upload hình trước khi đăng bài viết!';
						break;
					}
				}

			}

		}
	}
	
	
	public function validateVideoSource($videoUrl, $source){
		
		if($source){
			
			$video = videofactory::create($source);
			if(!$video){
				
				$this->_errorMessage['errors']['txtSource'] = 'Nguồn video không tồn tại.';
			}
			
			
			if($video instanceof video){

			
				if(!isset($videoUrl) || empty($videoUrl)){
					$this->_errorMessage['errors']['txtSourceUrl'] = 'Đường dẫn video không được để trống.';
				}else{
					//$video=new youtube();
					$video->setLink($videoUrl);
					$queryParams = $video->getQueryParams();
					$video->getVideoInformation($queryParams);

					if($video->isError()){
						$this->_errorMessage['errors']['txtSourceUrl'] = $video->getErrors();
					}else{
						return $video;
					}
				}
			}else{
				$this->_errorMessage['errors']['txtSource'] = 'Nguồn video không tồn tại.';
			}
			
		}else{
			
			$this->_errorMessage['errors']['txtSource'] = 'Vui lòng chọn nguồn video.';
		}
	}
	
	public function validateStorySource($storyUrl, $source){
		try{
			$story = storyfactory::create($source);
		}catch(Exception $e){
			$this->_errorMessage['errors']['txtSourceUrl'] =  $e->getMessage();
			return;
		}
		
		$model = new Model();
		$model->select = "id";
		$model->where = "getlink_source = '" . $storyUrl . "'";
		$model->getdata('truyen');
		if($model->num_rows() > 0){
			$this->_errorMessage['errors']['existed'] = 'Truyện đã tồn tại trong database';
			return;
		}
		
		if($story instanceof story){
			if(!$storyUrl){
				$this->_errorMessage['errors']['txtSourceUrl'] = 'Điền liên kết truyện';
				return;
			}
			if($story instanceof sstruyen){
				$storyUrl = preg_replace('/.html/', '/page-%s%.html#chaplist', $storyUrl);
			}
			
			if($story instanceof webtruyen){
				$storyUrl = $storyUrl . '%s%';
			}
			
			if($story instanceof tunghoanh){
				$storyUrl = $storyUrl;
			}
			//http://sstruyen.com/doc-truyen/lich-su/chue-te--o-re-/1030.html
			//http://sstruyen.com/doc-truyen/lich-su/chue-te--o-re-/1030/page-1.html#chaplist
			
			$story->patternUrl = $storyUrl;
			return $story;
		}
	}
	

	/*
	 *  Validate Album title
	 */
	public function validateAlbumTitle($title){
		if(empty($title) || !isset($title)){
			$this->_isError = true;
			$this->_errorMessage['errors']['txtAlbumTitle'] = 'Tên album không được để trống!';
		}
	}
	
	public function getErrorMessages(){
		return $this->_errorMessage;
	}
	
	public function isError(){
		if($this->_errorMessage){
			return true;
		}else{
			return false;
		}
	}
	
	
}